package com.sinoglobal.ningxia.widget;

import android.content.Context;
import android.graphics.PointF;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import com.sinoglobal.ningxia.R;

public class ChildViewPager extends ViewPager {
	/** 触摸时按下的点 **/
	PointF downP = new PointF();
	/** 触摸时当前的点 **/
	PointF curP = new PointF();
	OnSingleTouchListener onSingleTouchListener;
	private int mLastMotionY;
	private float x, y, ux, uy;

	public ChildViewPager(Context context, AttributeSet attrs) {
		super(context, attrs);
		//Auto-generated constructor stub
	}

	public ChildViewPager(Context context) {
		super(context);
		//Auto-generated constructor stub
	}

	// @Override
	// public boolean onInterceptTouchEvent(MotionEvent e) {
	// //Auto-generated method stub
	// getParent().requestDisallowInterceptTouchEvent(true);
	// return super.onInterceptTouchEvent(e);
	// }

	@Override
	public boolean onTouchEvent(MotionEvent e) {
		//Auto-generated method stub

		return super.onTouchEvent(e);
	}

	@Override
	public boolean dispatchTouchEvent(MotionEvent ev) {
		//Auto-generated method stub
		return super.dispatchTouchEvent(ev);

	}

	@Override
	public boolean onInterceptTouchEvent(MotionEvent e) {
		//Auto-generated method stub
		switch (e.getAction()) {
		case MotionEvent.ACTION_DOWN:
			x = e.getX();
			y = e.getY();
			// 只有一条数据时，不拦截
			
			if (getAdapter()!=null&&getAdapter().getCount() == 1) {
				getParent().requestDisallowInterceptTouchEvent(false);
				return super.onInterceptTouchEvent(e);
			}
			// 首先拦截down事件,记录y坐标
			getParent().requestDisallowInterceptTouchEvent(true);
			break;
		case MotionEvent.ACTION_MOVE:
			// deltaY > 0 是向下运动,< 0是向上运动
			ux = e.getX();
			uy = e.getY();
			// if (Math.abs(x - ux) > Math.abs(y - uy)) {
			if (Math.abs(x - ux) < Math.abs(y - uy)) {
				getParent().requestDisallowInterceptTouchEvent(false);
			} else {
				// getParent().requestDisallowInterceptTouchEvent(false);
			}
			break;
		case MotionEvent.ACTION_UP:
			getParent().requestDisallowInterceptTouchEvent(false);
			break;
		case MotionEvent.ACTION_CANCEL:
			getParent().requestDisallowInterceptTouchEvent(false);
			break;
		}
		return super.onInterceptTouchEvent(e);
	}

	// @Override
	// public boolean onTouchEvent(MotionEvent e) {
	// //Auto-generated method stub
	// // 每次进行onTouch事件都记录当前的按下的坐标
	// curP.x = e.getX();
	// curP.y = e.getY();
	//
	// if (e.getAction() == MotionEvent.ACTION_DOWN) {
	// // 记录按下时候的坐标
	// // 切记不可用 downP = curP ，这样在改变curP的时候，downP也会改变
	// downP.x = e.getX();
	// downP.y = e.getY();
	// // 此句代码是为了通知他的父ViewPager现在进行的是本控件的操作，不要对我的操作进行干扰
	// getParent().requestDisallowInterceptTouchEvent(true);
	// }
	//
	// if (e.getAction() == MotionEvent.ACTION_MOVE) {
	// // 此句代码是为了通知他的父ViewPager现在进行的是本控件的操作，不要对我的操作进行干扰
	// getParent().requestDisallowInterceptTouchEvent(true);
	// }
	//
	// if (e.getAction() == MotionEvent.ACTION_UP) {
	// // 在up时判断是否按下和松手的坐标为一个点
	// // 如果是一个点，将执行点击事件，这是我自己写的点击事件，而不是onclick
	// if (downP.x == curP.x && downP.y == curP.y) {
	// onSingleTouch();
	// return true;
	// }
	// }
	//
	// return super.onTouchEvent(e);
	// }

	/**
	 * 单击
	 */
	public void onSingleTouch() {
		if (onSingleTouchListener != null) {

			onSingleTouchListener.onSingleTouch();
		}
	}

	/**
	 * 创建点击事件接口
	 * 
	 * @author wanpg
	 * 
	 */
	public interface OnSingleTouchListener {
		public void onSingleTouch();
	}

	public void setOnSingleTouchListener(
			OnSingleTouchListener onSingleTouchListener) {
		this.onSingleTouchListener = onSingleTouchListener;
	}

}